2023/12/232451字符
运算符
扩展运算符
数组展开
let arr = [1,2,3,4,5,7,3]
console.log(...arr); //--> 1, 2, 3, 4, 5, 7, 3
字符串展开
let str = 'bozai'
console.log(...str); //--> b o z a i
console.log([...str]); //--> ["b", "o", "z", "a", "i"]
数组展开并合并
let a = [1,2,3]
let b = [4,5]
console.log({...a}); //--> {0: 1, 1: 2, 2: 3}
console.log({...a, ...b}); //--> {'0': 2, '1': 4, '2': 3}
实现浅层克隆
let obj1 = {
name: 'bozai',
age: 18,
}
let obj2 = {
...obj1, // 浅层克隆 ES7提出
}
利用扩展运算符实现数组排序
function show3 (...a) {
console.log(a.sort());
}
show3(4, 2, 3, 1, 5); //--> [1, 2, 3, 4, 5]
打包剩余参数
function show4(a, b, ...c){ // 将剩余参数打包
console.log(a, b, c);
}
show4(1, 2, 3, 4, 5); //--> 1 2 [3, 4, 5]
const obj = {x, y, ...z} = {x : 1, y : 2, a : 3, b : 4};
console.log(obj); //--> {x: 1, y: 2, a: 3, b: 4}
对象转数组
let obj2 = {
"name": "cys",
"age": 18,
"sex": "man",
[Symbol.iterator]: function () {
const self = this;
let keys = Object.keys(obj2)
let index = 0;
let len = keys.length
return {
next: function () { // 实现next
if (index < len) {
return { // 遍历中
value: self[keys[index++]],
done: false // 表示遍历没有结束,done设置为fasle
}
} else {
return { // 遍历结束
value: undefined, // 结束后,返回undefined
done: true // done设置为true,表示遍历结束
}
}
}
}
}
}
console.log([...obj2]); //--> ["cys", 18, "man"]
console.log({...obj2}); //--> {name: "cys", age: 18, sex: "man", Symbol(Symbol.iterator): ƒ}
赋值运算符
符号 | 作用 |
---|---|
??= |
空赋值运算符:类型为 undefined 或 null 赋值 |
&&= |
且 赋值:&&= 前类型为 true 时进行赋值 |
||= |
或 赋值:` |